﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AvaProvi
{
    [Serializable]
    public class clsObraNegra_CRN:clsEstado,IControlEstados
    {
        //private string strEntrepisos;
        public string EstadoCimentacion { get; set; }
        public string Cimentacion { get; set; }
        public string EstadoEstructura { get; set; }
        public string Estructura { get; set; }
        public string EstadoMuros { get; set; }
        public string Muros { get; set; }
        public string Entrepisos{ get; set; }
        //{
        //    get { return strEntrepisos; }
        //    set
        //    {
        //        if (this.Inmueble.NoDeNiveles > 1)
        //            strEntrepisos = value;
        //        else
        //        {
        //            MessageBox.Show("Solo se puede llenar cuando sean dos o más niveles", "No tiene antrepisos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        //            strEntrepisos = string.Empty;
        //        }
        //    }
        //}
        public string EstadoTechos { get; set; }
        public string Techos { get; set; }
        public string EstadoAzoteas { get; set; }
        public string Azoteas { get; set; }
        public string EstadoImpermeabilizacion { get; set; }
        public string Impermeabilizacion { get; set; }
        public string EstadoBardas { get; set; }
        public string Bardas { get; set; }
        public string Escaleras { get; set; }
        public clsInmueble_CRN Inmueble { get; set; }

        public clsObraNegra_CRN(clsInmueble_CRN objInmueble):base()
        {
            this.Inmueble = objInmueble;
            this.Azoteas = string.Empty;
            this.Bardas = string.Empty;
            this.Cimentacion = string.Empty;
            this.Entrepisos = string.Empty;
            this.Escaleras = string.Empty;
            this.EstadoAzoteas = string.Empty;
            this.EstadoBardas = string.Empty;
            this.EstadoCimentacion = string.Empty;
            this.EstadoEstructura = string.Empty;
            this.EstadoImpermeabilizacion = string.Empty;
            this.EstadoMuros = string.Empty;
            this.EstadoTechos = string.Empty;
            this.Estructura = string.Empty;
            this.Impermeabilizacion = string.Empty;
            this.Muros = string.Empty;
            this.Techos = string.Empty;            
        }

        #region Métodos

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return CreaObraNegra();
                else
                {
                    if (this.EsModificado)
                        return ModificaObraNegra();
                    else
                        return EliminaObraNegra();
                }
            }
            return false;
        }

        private bool EliminaObraNegra()
        {
            clsObraNegra_CD objObraNegra_CD = new clsObraNegra_CD();
            return objObraNegra_CD.EliminarObraNegra(this);
        }

        private bool ModificaObraNegra()
        {
            clsObraNegra_CD objObraNegra_CD = new clsObraNegra_CD();
            return objObraNegra_CD.ModificaObraNegra(this);
        }

        private bool CreaObraNegra()
        {
            clsObraNegra_CD objObraNegra_CD = new clsObraNegra_CD();
            if (objObraNegra_CD.CreaObraNegra(this))
            {
                this.EsModificado = true;
                return true;
            }
            return false;
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static clsObraNegra_CRN RecuperaObraNegra(clsInmueble_CRN objInmueble)
        {
            clsObraNegra_CD objObraNegra_CD = new clsObraNegra_CD();
            clsObraNegra_CRN objObraNegra = new clsObraNegra_CRN(objInmueble);
            dsInmoviliario.ObraNegraRow ObraNegraRecuperada = objObraNegra_CD.RecuperaObraNegra(objInmueble.Avaluo.IdAvaluo);
            if (ObraNegraRecuperada != null)
            {
                objObraNegra.Azoteas = ObraNegraRecuperada.Azoteas;
                objObraNegra.Bardas = ObraNegraRecuperada.Bardas;
                objObraNegra.Cimentacion = ObraNegraRecuperada.Cimentacion;
                objObraNegra.Entrepisos = ObraNegraRecuperada.Entrepisos;
                objObraNegra.Escaleras = ObraNegraRecuperada.Escaleras;
                objObraNegra.EsModificado = true;
                objObraNegra.EstadoAzoteas = ObraNegraRecuperada.EdoAzoteas;
                objObraNegra.EstadoBardas = ObraNegraRecuperada.EdoBardas;
                objObraNegra.EstadoCimentacion = ObraNegraRecuperada.EdoCimentacion;
                objObraNegra.EstadoEstructura = ObraNegraRecuperada.EdoEstructura;
                objObraNegra.EstadoImpermeabilizacion = ObraNegraRecuperada.EdoImpermeabilizacion;
                objObraNegra.EstadoMuros = ObraNegraRecuperada.EdoMuros;
                objObraNegra.EstadoTechos = ObraNegraRecuperada.EdoTechos;
                objObraNegra.Estructura = ObraNegraRecuperada.Estructura;
                objObraNegra.Impermeabilizacion = ObraNegraRecuperada.Impermeabilizacion;
                objObraNegra.Muros = ObraNegraRecuperada.Muros;
                objObraNegra.Techos = ObraNegraRecuperada.Techos;
            }
            return objObraNegra;
        }
        #endregion
    }
}
